#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Gitee代码推送工具 - PyInstaller打包脚本
"""

import os
import sys
import subprocess
import shutil

def main():
    print("=== Gitee代码推送工具 - 开始打包 ===")
    
    # 检查必要文件
    required_files = [
        "gitee_uploader.py",
        "icon.ico",
        "requirements.txt"
    ]
    
    for file in required_files:
        if not os.path.exists(file):
            print(f"❌ 错误：缺少必要文件 {file}")
            return False
    
    print("✅ 所有必要文件检查通过")
    
    # 安装PyInstaller（如果未安装）
    try:
        import PyInstaller
        print("✅ PyInstaller已安装")
    except ImportError:
        print("📦 正在安装PyInstaller...")
        subprocess.run([sys.executable, "-m", "pip", "install", "pyinstaller"], check=True)
        print("✅ PyInstaller安装完成")
    
    # 清理之前的构建文件
    if os.path.exists("build"):
        shutil.rmtree("build")
        print("🧹 清理build目录")
    
    if os.path.exists("dist"):
        shutil.rmtree("dist")
        print("🧹 清理dist目录")
    
    # 构建命令
    cmd = [
        "pyinstaller",
        "--onefile",                    # 打包成单个exe文件
        "--windowed",                   # 无控制台窗口
        "--icon=icon.ico",             # 设置exe图标
        "--name=Gitee代码推送工具",      # 设置exe文件名
        "--add-data=icon.ico;.",       # 包含图标文件
        "--hidden-import=tkinter",     # 确保tkinter被包含
        "--hidden-import=git",         # 确保git被包含
        "--hidden-import=requests",    # 确保requests被包含
        "--clean",                      # 清理临时文件
        "gitee_uploader.py"
    ]
    
    print("🔨 开始打包...")
    print(f"执行命令: {' '.join(cmd)}")
    
    try:
        # 执行打包
        result = subprocess.run(cmd, check=True, capture_output=True, text=True)
        print("✅ 打包完成！")
        
        # 检查输出文件
        exe_path = os.path.join("dist", "Gitee代码推送工具.exe")
        if os.path.exists(exe_path):
            file_size = os.path.getsize(exe_path) / (1024 * 1024)  # MB
            print(f"📁 生成文件: {exe_path}")
            print(f"📊 文件大小: {file_size:.2f} MB")
            
            # 复制配置文件到dist目录（如果存在）
            config_files = ["gitee_config.json", "gitee_config_example.json"]
            for config_file in config_files:
                if os.path.exists(config_file):
                    shutil.copy2(config_file, "dist")
                    print(f"📋 复制配置文件: {config_file}")
            
            # 复制说明文档到dist目录
            doc_files = ["README.md", "QUICK_START.md", "GITEE_TOKEN_GUIDE.md"]
            for doc_file in doc_files:
                if os.path.exists(doc_file):
                    shutil.copy2(doc_file, "dist")
                    print(f"📚 复制文档: {doc_file}")
            
            print("\n🎉 打包成功！")
            print(f"📂 输出目录: {os.path.abspath('dist')}")
            print("💡 提示：可以将dist目录中的文件分发给用户")
            
        else:
            print("❌ 错误：未找到生成的exe文件")
            return False
            
    except subprocess.CalledProcessError as e:
        print(f"❌ 打包失败: {e}")
        print(f"错误输出: {e.stderr}")
        return False
    except Exception as e:
        print(f"❌ 打包过程出错: {e}")
        return False
    
    return True

if __name__ == "__main__":
    success = main()
    if not success:
        sys.exit(1) 